// app.js
import api from './utils/api'
import auth from './utils/auth'

App({
  globalData: {
    userInfo: null,
    token: '',
    systemConfig: {},
    baseUrl: 'https://nzy.congqian.cn/api/', // 后端API地址
    version: '1.0.0'
  },

  onLaunch() {
    console.log('小程序启动')
    
    // 检查更新
    this.checkUpdate()
    
    // 初始化
    this.init()
  },

  onShow() {
    console.log('小程序显示')
  },

  onHide() {
    console.log('小程序隐藏')
  },

  onError(err) {
    console.error('小程序错误:', err)
    // 可以在这里上报错误到后台
  },

  // 初始化应用
  async init() {
    try {
      // 检查登录状态
      const token = wx.getStorageSync('token')
      if (token) {
        this.globalData.token = token
        // 验证token有效性
        await this.validateToken()
      }
      
      // 获取系统配置
      await this.getSystemConfig()
      
    } catch (error) {
      console.error('初始化失败:', error)
    }
  },

  // 验证token（统一走 miniapp 用户中心接口）
  async validateToken() {
    try {
      const userInfo = await api.auth.getProfile()
      
      this.globalData.userInfo = userInfo
      
    } catch (error) {
      console.log('token验证失败，需要重新登录')
      // 清除无效token
      this.clearAuth()
    }
  },

  // 获取系统配置
  async getSystemConfig() {
    try {
      const config = await api.request({
        url: '/system.php?action=config',
        method: 'GET',
        needAuth: false
      })
      
      this.globalData.systemConfig = config
      
    } catch (error) {
      console.error('获取系统配置失败:', error)
    }
  },

  // 检查小程序更新
  checkUpdate() {
    if (wx.canIUse('getUpdateManager')) {
      const updateManager = wx.getUpdateManager()
      
      updateManager.onCheckForUpdate((res) => {
        if (res.hasUpdate) {
          console.log('发现新版本')
        }
      })
      
      updateManager.onUpdateReady(() => {
        wx.showModal({
          title: '更新提示',
          content: '新版本已经准备好，是否重启应用？',
          success: (res) => {
            if (res.confirm) {
              updateManager.applyUpdate()
            }
          }
        })
      })
      
      updateManager.onUpdateFailed(() => {
        console.error('新版本下载失败')
      })
    }
  },

  // 设置用户信息
  setUserInfo(userInfo, token) {
    this.globalData.userInfo = userInfo
    this.globalData.token = token
    
    // 存储到本地
    wx.setStorageSync('userInfo', userInfo)
    wx.setStorageSync('token', token)
  },

  // 清除认证信息
  clearAuth() {
    this.globalData.userInfo = null
    this.globalData.token = ''
    
    wx.removeStorageSync('userInfo')
    wx.removeStorageSync('token')
  },

  // 检查登录状态并触发快捷登录
  async checkAuth(showModal = true) {
    if (!this.globalData.token || !this.globalData.userInfo) {
      // 需要登录，触发微信快捷登录
      if (showModal) {
        return new Promise((resolve) => {
          wx.showModal({
            title: '需要登录',
            content: '此功能需要登录后使用，是否立即登录？',
            confirmText: '立即登录',
            cancelText: '取消',
            success: async (res) => {
              if (res.confirm) {
                try {
                  wx.showLoading({ title: '登录中...' })
                  const result = await auth.wxLogin()
                  wx.hideLoading()
                  
                  if (result.success) {
                    wx.showToast({
                      title: '登录成功',
                      icon: 'success'
                    })
                    resolve(true)
                  } else {
                    wx.showToast({
                      title: result.message || '登录失败',
                      icon: 'none'
                    })
                    resolve(false)
                  }
                } catch (error) {
                  wx.hideLoading()
                  console.error('快捷登录失败:', error)
                  wx.showToast({
                    title: '登录失败，请重试',
                    icon: 'none'
                  })
                  resolve(false)
                }
              } else {
                resolve(false)
              }
            }
          })
        })
      } else {
        return false
      }
    }
    return true
  },

  // 显示错误信息
  showError(message, title = '提示') {
    wx.showModal({
      title: title,
      content: message,
      showCancel: false
    })
  },

  // 显示成功信息
  showSuccess(message) {
    wx.showToast({
      title: message,
      icon: 'success',
      duration: 2000
    })
  },

  // 显示加载提示
  showLoading(message = '加载中...') {
    wx.showLoading({
      title: message,
      mask: true
    })
  },

  // 隐藏加载提示
  hideLoading() {
    wx.hideLoading()
  },

  // 格式化日期
  formatDate(date) {
    if (!date) return ''
    const d = new Date(date)
    const year = d.getFullYear()
    const month = String(d.getMonth() + 1).padStart(2, '0')
    const day = String(d.getDate()).padStart(2, '0')
    return `${year}-${month}-${day}`
  },

  // 格式化时间
  formatTime(datetime) {
    if (!datetime) return ''
    const d = new Date(datetime)
    const year = d.getFullYear()
    const month = String(d.getMonth() + 1).padStart(2, '0')
    const day = String(d.getDate()).padStart(2, '0')
    const hour = String(d.getHours()).padStart(2, '0')
    const minute = String(d.getMinutes()).padStart(2, '0')
    return `${year}-${month}-${day} ${hour}:${minute}`
  }
})